package com.ruge.test.springMVC.过滤器;

import javax.servlet.*;
import java.io.IOException;

/**
 * 创建人 ：爱丽丝、如歌
 * 创建时间 ：2018-06-29  21:14
 * 描述 ：
 */
public class FirstFilter implements Filter {
    /**
     * 过滤器的初始化方法  Web容器创建过滤器实例后调用该方法 这个方法可以读取web.xml文件中的过滤器的参数
     *
     * @param filterConfig web.xml过滤器中的参数
     * @throws ServletException
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("开始调用过滤器");
    }

    /**
     * 这个方法完成实际的过滤操作  这个地方是过滤器的核心方法 当用户请求到和过滤器相关的url时 web容器或先
     * 调用过滤器的doFilter方法   FilterChain 参数可以调用filterChain.doFilter方法 将请求传递给下一个过滤器
     * 或利用 转发  重定向  将请求转发给其他资源
     *
     * @param servletRequest
     * @param servletResponse
     * @param filterChain
     * @throws IOException
     * @throws ServletException
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("开始执行过滤器");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("结束执行过滤器");
    }

    /**
     * web容器在销毁过滤器实例前调用该方法 在这个方法中可以释放过滤器占用的资源 （大多数情况用不到）
     */
    @Override
    public void destroy() {
        System.out.println("销毁过滤器");
    }
}
